
// 每一个模块都是一个store对象(state getters mutations action)  => 最终挂载到根Store

/*  
    对于state来说, 无论是否设置命名空间, 都会对应模块名称,将数据存储到根Store的state对象中

    $store.state = {
        a:1,
        b:2,
        demo:{
            x:1
        },
        user:{

        }
    }


    没有设置命名空间 => 挂载到全局(只针对 getters mutations action)
        getters中的计算属性  => 直接对应属性名挂载到 根store实例的getters对象中
        mutations 中的同步方法 => 直接对应方法名挂载到 根store实例的_mutations对象中
        action 中的异步方法  => 直接对应方法名挂载到 根store实例的_actions对象中
        
        => 直接用属性和方法格式调用即可



*/

export default { 
    namespaced: false, // 没有设置命名空间 => 挂载到全局
    state(){
        return {
            x:10,
        }
    },
    getters:{
        // doubleX(state,getters,rootState,rootGetters){
        //     return  state.x * 2;
        // }
        doubleX(state){
            return  state.x * 2;
        }
    },
    mutations:{
        addX(state){
            state.x ++;
        }
    },
    actions:{
        // context  => 当前store实例
        addX_Async(context){
            console.log(context); // {state,getters,rootState,rootGeeters,commit,dispatch}
            let {commit} = context;
            return new Promise((resolve)=>{
                setTimeout(()=>{
                    commit("addX");
                    resolve(true);
                },2000)
            })
        }
    }




}